import bcrypt


# 封装密码的加密方法
def encode_password(password):
    """
    使用 bcrypt 对密码进行加密

    :param password: 原始密码
    :return: 加密后的密码
    """
    # 生成盐值
    salt = bcrypt.gensalt()
    # 对密码进行哈希处理
    # 因为盐值是随机的，所以即使是一样的密码，两次哈希加密后的结果也会不同
    hashed_password = bcrypt.hashpw(password.encode('utf-8'), salt)
    return hashed_password.decode('utf-8')


# 封装密码的校验方法
def check_password(password, hashed_password):
    """
    检查密码是否与数据库中存储的加密密码哈希值匹配

    :param password: 原始密码
    :param hashed_password: 数据库中哈希后的密码
    :return: 如果密码匹配返回 True，否则返回 False
    """
    return bcrypt.checkpw(password.encode('utf-8'), hashed_password.encode('utf-8'))
